/*
 * @description:
 * @Author: lal
 * @Date: 2021-07-09 10:24:09
 * @LastEditors: lal
 * @LastEditTime: 2021-07-09 10:30:32
 */
/*
 * @lc app=leetcode.cn id=5 lang=javascript
 *
 * [5] 最长回文子串
 */

// @lc code=start
/**
 * @param {string} s
 * @return {string}
 */
var longestPalindrome = function (s) {
  if (s.length < 2) {
    return s //最长回文子串
  }
  let res = ""
  function helper(m, n) {
    while (m >= 0 && n < s.length && s[m] == s[n]) {
      m--
      n++
    }
    // 注意此处m,n的值循环完后  是恰好不满足循环条件的时刻
    // 此时m到n的距离为n-m+1，但是mn两个边界不能取 所以应该取m+1到n-1的区间  长度是n-m-1

    return s.slice(m + 1, n)
  }
  for (let i = 0; i < s.length; i++) {
    // 回文子串长度是奇数
    let res1 = helper(i, i)
    if (res1.length > res.length) {
      res = res1
    }
    // 回文子串长度是偶数
    let res2 = helper(i, i + 1)
    if (res2.length > res.length) {
      res = res2
    }
  }
  return res
}
// @lc code=end
